//Nuget:
 //Microsoft.CodeAnalysis
 //Microsoft.CodeAnalysis.Common
 //Microsoft.CodeAnalysis.Workspaces.Common
 //Microsoft.CodeAnalysis.Workspaces.MSBuild
 //Microsoft.Build.Locator

  MSBuildLocator.RegisterDefaults();

 using (var msWorkspace = MSBuildWorkspace.Create())
  {
    msWorkspace.WorkspaceFailed += (object sender, WorkspaceDiagnosticEventArgs e) =>
    {
       //loadSolutionError = e;
       //Error handler
   };

   var solution = await msWorkspace.OpenSolutionAsync(solutionPath);
   var projects = solution.Projects;

   // ...
 }
  • Для исследования кода можно использовать либо Visitor (CSharpSyntaxRewriter), либо получение списка всех синтаксических выражений в документе.
  • Для использования механизма поиска ссылок используется класс Microsoft.CodeAnalysis.FindSymbols.SymbolFinder.

DustinCampbell/using-msbuildworkspace.md
https://gist.github.com/DustinCampbell/32cd69d04ea1c08a16ae5c4cd21dd3a3

Теги: